home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / TUTORIAL / 0222.ZIP / TABSET1.PAS < prev    next >
Pascal/Delphi Source File  |  1983-01-07  |  3KB  |  93 lines

  1. {$TITLE:'Epson MX-100 TabSet Procedure',$PAGESIZE:57,$LINESIZE:132,$LINE+}
  2.  
  3. {This program is an elementary-level Pascal program, illustrating how
  4.  procedures are incorporated into programs, how a printer file is
  5.  defined and used and how control characters can be defined and used.
  6.  The program was written for an Epson MX-100; it can presumably be
  7.  used on the MX-80 with virtually no change.}
  8.  
  9. PROGRAM TabTest (Input,Output);
  10.  
  11. VAR
  12.   I, Col, Count: INTEGER;
  13.   Flag: BOOLEAN;
  14.   Answer: CHAR;
  15.   Tabs: ARRAY[1..132] OF BOOLEAN;
  16.   Printer: TEXT;
  17.  
  18. PROCEDURE TabSet (TabCol: INTEGER; VerifyFlag: BOOLEAN);
  19.  
  20. CONST
  21.   Escape = CHR(27);
  22.   HorTab = CHR(9);
  23.   NullChar = CHR(0);
  24.      
  25. BEGIN
  26.  
  27.   IF TabCol < 0 THEN
  28.     BEGIN
  29.       Count:= 0;
  30.       FOR I:= 1 TO 132 DO
  31.         Tabs[I]:= FALSE
  32.     END
  33.   
  34.   ELSE IF (TabCol >= 1) AND (TabCol <= 132) AND (Count < 12) THEN
  35.     BEGIN
  36.       Count:= Count+1;
  37.       Tabs[TabCol]:= TRUE
  38.     END
  39.  
  40.   ELSE IF TabCol = 0 THEN
  41.     BEGIN
  42.       ASSIGN (Printer,'LPT1:'); { Open print file }
  43.       REWRITE (Printer);
  44.       WRITE (Printer,Escape,'D'); { Send Escape D }
  45.       FOR I:= 2 TO 132 DO { Send column numbers for tab settings }
  46.         IF Tabs[I] THEN WRITE (Printer,CHR(I-1));
  47.       WRITELN (Printer,NullChar); { Send null to terminate sequence }
  48.             
  49.       IF VerifyFlag = TRUE THEN
  50.         BEGIN
  51.           WRITE (Printer,'-');
  52.           FOR I:=2 TO 132 DO
  53.             BEGIN
  54.               IF Tabs[I] THEN WRITE (Printer,'+')
  55.               ELSE WRITE (Printer,'-');
  56.             END;
  57.           WRITELN (Printer);
  58.           FOR I:= 1 TO Count DO
  59.             BEGIN
  60.               WRITE (Printer,HorTab,'+');
  61.             END;
  62.           WRITELN (Printer);
  63.         END;
  64.       CLOSE (Printer)
  65.     END;
  66. END;
  67.   
  68. BEGIN
  69.   WRITE ('Will You Want To Display Tab Settings (Y/N)? ');
  70.   READLN (Answer);
  71.   IF (Answer='Y') OR (Answer='y') THEN
  72.     BEGIN
  73.       Flag:= TRUE;
  74.       WRITELN ('Tab Settings Will Be Displayed . . .')
  75.     END
  76.   ELSE
  77.     BEGIN
  78.       Flag:= FALSE;
  79.       WRITELN ('Tab Settings Will Not Be Displayed . . .')
  80.     END;
  81.   TabSet (-1,Flag);
  82.   WRITELN;
  83.   WRITELN ('Enter Up To Ten Tabs, Each On A Separate Line.');
  84.   WRITELN ('Enter A "0" To Stop Column Prompts . . .');
  85.   WRITELN;
  86.   REPEAT
  87.     READLN (Col);
  88.     TabSet (Col,Flag);
  89.     IF Col <>0
  90.       THEN WRITELN ('A Tab Will Be Set in Column ', Col:1)
  91.       ELSE WRITELN ('Tab Setting Completed.')
  92.   UNTIL Col=0
  93. END.